The TIA (as seen by the programmer)
6.0 The Moveable Objects Graphics
All 5 moveable objects (P0, M0, P1, M1, BL) can be assigned
a horizontal location on the screen and moved left or right
relative to their location. Vertical positions, however,
are treated in an entirely different manner. In principle,
these objects appear at whatever scan lines their graphics
registers are enabled. For example, let us assume the ball
is to be positioned vertically in the center of the screen.
The screen has 192 scan lines and we want the ball to be 2
scan lines thick. The ball graphics would be disabled
until scan line 96, enabled for 2 scan lines, then disabled
for the rest of the frame. Each type of object (players,
missiles, and ball) has its own characteristics and
limitations.
6.1 Missile Graphics (M0, M1)
The two missile graphics registers will draw a missile on
any scan line by writing a 1 to the one bit enable
missile registers (ENAM0, ENAM1). Writing a 0 to these
registers will disable the graphics. The missiles left
edge is positioned by a horizontal position register, but
the right edge is a function of how wide the missile is
make. Width of a missile is controlled by writing into
bits D4 and D5 of the number-size registers (NUSIZ0,
NUSIZ1). This has the effect of stretching the missile
out over 1,2,4, or 8 color clock counts (a full scan line
is 160 color clocks).
6.2 Ball Graphics (BL)
The ball graphics register works just like the missile
registers. Writing a 1 to the enable ball register
(ENABL) enables the ball graphics until the register is
disabled. The ball can also be stretched to widths of 1,
2, 4, or 8 color clock counts by writing to bits D4 and D5
of the CTRLPF register.
The ball can also be vertically delayed one can line. For
example, if the ball graphics were enabled on scan line 95,
it could be delayed to not display on the screen until scan
line 96 by writing a 1 to D0 of the vertical delay
(VDELBL) register. The reason for having a vertical delay
capability is because most programs will update the TIA
every 2 lines. This confines all vertical movements of
objects to 2 scan line jumps. The use of vertical delay
allows the objects to move one scan line at a time.
6.3 Player Graphics (P0, P1)
The player graphics are the most sophisticated of all the
moveable objects. They have all the capabilities of the
missile and ball graphics, plus three move capabilities.
Players can take on a shape such as a man or an airplane,
and the player can easily be flipped over horizontally to
display the mirror image (reflection) instead of the
original image, plus multiple copies of the players can be
created.
The player graphics are drawn line-by-line like all other
graphics. The difference here is each scan line of the
player is 8 bits wide, whereas the missiles and ball are
one bit wide. Therefore, a player can be though of as
being drawn of graph paper 8 squares wide and as tall as
desired. To color in the squares of this imaginary graph
paper, 8 data bits are written into the players graphics
registers (GP0, GP1). This 8 bit register is scanned from
D7 to D0, and wherever a 1 is found that square gets
the players color (from the color-lum register) and where
a 0 is found that square gets the background color. To
position a player vertically, simply leave all 0s in the
graphics registers (GP0, GP1) until the electron beam is on
the scan line desired, write to the graphics register line-
by-line describing the player, then write all 0s to turn
off the players graphics until the end of that frame.
To display a mirror image (reflection) instead of the
original figure, write a 1 to D3 of the one bit
reflection register (REFP0, REFP1). A 0 written to these
registers restores the original figure.
Multiple copies of players as well as their size are
controlled by writing 3 bits (D0, D1, D2) into the number-
size registers (NUSIZ0, NUSIZ1). These three bits select
from 1 to 3 copies of the player, spacing of those copies,
as well as the size of the player (each square of the
player can be 1, 2, or 4 clocks wide). Whenever multiple
copies are selected, the TIA automatically creates the same
number of copies of the missile for that player. Again,
the specifics of all this are laid out in the TIA hardware
manual.
Vertical delay for the players works exactly like the ball
by writing a 1 to D0 in the players vertical delay
registers (VDELP0, VDELP1). Writing a 0 to these
locations disables the vertical delay.